查看原文
其他

基于深度学习的VQA(视觉问答)技术

2016-09-19 刘智 深度学习大讲堂
点击上方“深度学习大讲堂”可订阅哦!
深度学习大讲堂是高质量原创内容的平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!

视觉问答导读

视觉问答(Visual Question Answering,VQA),是一种涉及计算机视觉和自然语言处理的学习任务。这一任务的定义如下: A VQA system takes as input an image and a free-form, open-ended, natural-language question about the image and produces a natural-language answer as the output[1]。 翻译为中文:一个VQA系统以一张图片和一个关于这张图片形式自由、开放式的自然语言问题作为输入,以生成一条自然语言答案作为输出。简单来说,VQA就是给定的图片进行问答。

VQA系统需要将图片和问题作为输入,结合这两部分信息,产生一条人类语言作为输出。针对一张特定的图片,如果想要机器以自然语言来回答关于该图片的某一个特定问题,我们需要让机器对图片的内容、问题的含义和意图以及相关的常识有一定的理解。VQA涉及到多方面的AI技术(图1):细粒度识别(这位女士是白种人吗?)、 物体识别(图中有几个香蕉?)、行为识别(这位女士在哭吗?)和对问题所包含文本的理解(NLP)。综上所述,VQA是一项涉及了计算机视觉(CV)和自然语言处理(NLP)两大领域的学习任务。它的主要目标就是让计算机根据输入的图片和问题输出一个符合自然语言规则且内容合理的答案。
图1. 图中展示了视觉问答的基本形式,图中展示了一位女士鼻子下方胡须的位置挂了两只香蕉,同时图片下方给出了针对这张图片的2个问题(引自:[1])
与VQA类似——看图说话(Image Caption)任务也同时涉及到CV和NLP两个领域,但是与VQA不同的是看图说话只需要产生对图片的一般性描述,而视觉问答根据问题的不同仅聚焦与图片中的某一部分,而且某些问题还需要一定的常识推理才能做出回答。例如图2中的第一个问题,你能在这停车吗?计算机需要读懂这张图片而且还要有那些地方可以停车,哪些地方不可以。而对于看图说话,则只需要产生一条类似“花园的左边有一辆车,后边有一个消防栓”的描述即可。因此,VQA相比看图说话在图像语义的理解方面有更高的要求,因此也具有更大的技术挑战。
图2. 这张图像试图说明“回答这个地方是否能停车”(VQA任务)比生成“花园的左边有一辆车,后边有一个消防栓”的看图说话(Image Caption)任务更难的。(引自:[1])

视觉问答中State-of-the-art方法介绍

随着深度学习的在CV和NLP中的广泛应用,深度学习强大的特征学习能力极大的推动了CV和NLP领域的研究。在CV中以CNN为代表的各种深度网络层出不穷,可以端到端的学习图像特征而不依赖手工设计的特征。CNN通过逐层的特征抽取,将图像从简单的边缘、角点等底层特征,逐层组合成为更高层次的特征。CNN在图像上强大的特征抽取能力使得它可以更加完备的抽取并压缩图像信息。而RNNs模型在NLP领域中也展现出了其强大之处,尤其是在语音识别,机器翻译,语言模型与文本生成等方面取得很大的成功。由于VQA涉及到CV和NLP两个领域的内容,那么很自然的一种VQA解决方案就是将在CV和NLP中应用非常成功的CNN和RNN结合构造组合模型。

由深度CNN和LSTM网络结构组合而成的VQA模型是目前来说在视觉问答中性能相对较好的模型。接下来,将介绍一些具有代表性的研究中提到的一些比较好的模型组合。

1. Deeper LSTM Q + norm I模型

该模型由Aishwarya Agrawal等人提出,文章发表于ICCV2015[1],其中I指的是提取后的图片特征,norm I指的是对CNN抽取的图像语义信息向量(1024维)做L2归一化处理。CNN抽取图像语义信息,LSTM抽取问题中包含的文本语义信息,将两者的信息融合,让模型学习到问题的含义/意图,最后送入一个以Softmax为输出层的多层MLP中产生答案输出,整体结构如图3所示。图3中输入图像中包含了一个室外场景中的2匹马和2个人在,这些信息由不含分类层的CNN抽取,而问题部分的信息则由一个LSTM网络结构按照问题单词的输入顺序逐个抽取问题信息,然后将两个压缩后的信息融合,将融合后的信息送入MLP中产生结果输出(当前问题是一个物体计数 (count object)问题)。
图3.一种典型的VQA模型结构(引自:[1])
该模型使用2层LSTM编码问题并用VGGNet去编码图像,然后将图像特征使用L2归一化。之后将图像和问题特征变换到同一个特征空间,通过点乘的方式将信息融合,融合后的信息送入一个以Softmax为分类器的三层MLP中产生答案输出。模型在训练的过程中,固定CNN,只有LSTM层和最后的分类网络参加训练。之所以CNN不参加训练的原因是对CNN的微调训练极度耗时,而且微调后的结果对模型整体的性能并没有特别大的提升。接下来的模型的CNN部分都与[1]中模型相同,因此不再赘述。

文中所使用的问答数据集是问答对和问答对对应的图片构成,问题的形式是开放式和多选,对应的答案由1-2个单词组成。文中为了研究图片和问题单独包含的信息量,分别设计了只提供问题(BoW  Q ,  LSTM + Q, deeper LSTM Q)、只提供图像(I)以及同时提供两者(BoW Q + I, LSTM Q + I, deep LSTM Q + norm I)的情况下回答问题的结果,实验结果如下图4所示,我们可以看到,单独的语言模型和视觉模型都有一定的精度,但是它们的精度并不高,这说明图像和问题各自独立包含了一些产生答案的过程中必要信息,单独利用某一方面都不能得到很好的效果,文中提出的模型在开放式和多选这两种问题得到的效果是最好的。
图4.不同模型实验结果对比(引自:[1])

2. VIS+LSTM模型

此模型由Mengye Ren等人提出,文章发表于NIPS2015[2],文中模型的基本结构是首先使用CNN抽取图片信息,完成之后接LSTM产生预测结果。Mengye Ren等人考虑到由于没有一个完好的评价答案句子精确度的标准,因此他们将注意力集中在有限的领域问题,这些问题可以用一个单词作为视觉问答的答案,这样就可以把视觉问答视为一个多分类问题,从而可以利用现有的精确度评价标准度量答案。

模型基本结构如图5所示,首先用在ImageNet上训练好的VGG19抽取图像特征得到一个4096维的向量(最后一个隐含层输出),然后将这个向量视为问题句子的第一个词。由于LSTM网络的输入是一个300或500维的词向量,为了使图片特征向量匹配词向量的纬度,文中[2]使用仿射或者线性变换将图像特征向量变换成一个300或500维的向量。接下来使用结合图像特征作为第一个词的LSTM网络按顺序提取问题的信息,最后将LSTM网络的最后一个输出送入Softmax作为最后的分类输出层产生答案。[2]中模型的训练与[1]略有不同,[2]中提出的模型选用的LSTM类型可以是双向的以及图像特征与问题特征融合的位置在[2]中可以同时在始末两处加入。[1]和[2]将视觉问答任务视为多分类问题,这种形式的模型一个优势是易于实现和验证。
图5. VIS+LSTM模型 引自:[2]

文章在此基础上产生了另外3个模型:


文章采用Accuracy、WUPS(0.9)、WUPS(0.0)来评价以上4个模型的性能。WUPS[6](Wu-Palmer Similarity)根据两个单词在一个分类树中的最长公共子序列来计算相似性。如果预测单词和标准答案单词的相似性低于设定的阈值则候选答案的评分为0。[2]在MS-COCO-QA[7]和DAQUAR[8](该数据集是一个室内场景数据集)数据集上的实验结果如图6所示。实验过程中有两点比较有趣:

1. IMG+BOW模型与VIS+LSTM模型在两个数据集上的表现十分相似。2. 在DAQUAR中,仅有语言模型的结果并没有比CNN+LSTM模型差太多,而在MS-COCO-QA数据集上,仅有语言模型的结果与CNN+LSTM模型的结果差距较大。

作者认为第一点出现的原因可能是因为视觉问答中,尤其是简单问题,词语之间序列信息的作用可能没有其他NLP任务中那么重要。第二点在DAQUAR数据集上单纯的语言模型没有比CNN+LSTM模型在结果上相差太多,原因应该是ImageNet的图片所对应的场景与室内场景差异太大。这里需要解释一下DAQUAR数据集问题,由于本文作者使用的VGGNet是在ImageNet数据集上训练的得到,而ImageNet和DAQUAR包含的图片的类型相差较大,ImageNet包含较多的室外场景和动物类别而DAQUAR多为室内场景。因此使用ImageNet训练得到的VGGNet在抽取室内场景信息的时候并不准确,这造成提取的图像语义信息并没有提供太大的贡献。从图6中实验结果中可以看出,VIS+LSTM模型在DAQUAR数据集的精度没有COCO-QA数据集上的精度好。在两个数据集上的精度差距较大的原因,作者分析其原因有:

1. COCO-QA的数据集与ImageNet有重叠。2. COCO-QA很少有室内场景的物体。3. COCO-QA的数据量极其庞大,可以训练出比较复杂的网络。
图6. DAQUAR与COCO-QA实验对比(引自:[2])

3. Neural-Image-QA模型

该由Mateusz Malinowski等人提出,文章发表在ICCV2015[3]。模型以CNN和LSTM为基础,以一种新的使用方式,设计了一个预测结果长度可变的模型。该模型将视觉问答任务视为结合图像信息作为辅助的sequence to sequence任务。模型结构如图7所示,首先由一个预训练好的深度CNN模型抽取出要回答的图片特征,然后将图片特征和转化为词向量的问题词一起送入LSTM网络,在每次送入一个问题词的同时将图片特征送入网络,直到所有的问题特征信息抽取完毕。接下来用同一个LSTM网络产生答案,直至产生结束符($)为止。该模型的训练过程是结合图像特征的LSTM网络的训练以及词向量的生成器的训练。
图7. Neural-Image-QA模型(引自:[3])
模型评价方面,该模型使用了与[2]中相同的评价方法即Accuracy和WUPS[6]。作者在DAQUAR及其减缩版数据集(构成答案的单词个数仅有1,2,3,4,即有4个DAQUAR的子集)上进行了测试,DAQUAR上的测试结果如图8所示。该模型提出了一种利用同一个LSTM网络产生变长答案的模型,[3]中分析认为不管是问题还是答案他们都属于同一个语料库,因此可以使用同种编码和信息抽取方式。我们可以看到,在多词类型的答案中,本文提出的模型较Malinowski et al提出的模型在Accuracy和WUPS分别有9%和11%的提升,这个提升幅度还是比较大的。在单个词类型的答案中,Accuracy的提升是Malinowski et al的2倍。
图8. DAQUAR不同模型实验结果(引自:[3])

4. mQA模型

该模型由Gao H等人提出,文章于NIPS2015上发表[4]。此文中对视觉问答任务的理解是:这个模型需要针对一个图片的自由形式的问题给出一个答案,而这个答案可以是一个句子,一个短语或者一个词。因此[4]中提出了一个相对之前的几个模型来说较为复杂的模型。mQA总共由4个子模块组成,第一个模块由一个LSTM网络将自然语句编码成一个稠密的词向量特征,即抽取问题中所包含的信息,下文称问题LSTM网络;第二个模块由一个深度CNN抽取图片的特征;第三个模块是另外一个不同的LSTM网络,这个网络用于编码在答案中当前词和之前的一些词的特征信息,下文称为答案LSTM网络,将其作为答案语境;最后一个模块则是用来融合前面三个模型产生的信息,来预测当前阶段要产生在答案中的下一个词。模型的结构如下图9所示。mQA模型的训练与[3]不同,它用两个LSTM分别处理问题和答案,这样在训练过程中就有两个LSTM结构和一个信息融合网络需要同时训练,该模型相对复杂且极易产生过拟合。mQA中为了避免此问题,将信息融合部分的中间层和Softmax层之间的权重矩阵与词向量生成层的权重以转置的方式共享;理由是输入层的词向量是把one-hot形式的词向量编码成到一个稠密的词特征空间,而Softmax层的输出则是将词从稠密空间解码成one-hot形式,两者是一个相反的 过程。这样一来,简化了模型的参数个数,简化了模型,在一定程度上缓解了模型的过拟合。
图9. mQA模型(引自:[4])
从模型的结构中我们可以看到,首先CNN和问题LSTM分别抽取图片特征以及问题特征,产生图片和问题的稠密词向量特征。这两部分信息准备完毕之后,答案LSTM网络首先由一个特定的答案开始符(<BOA>)作为该LSTM网络的起始输入,经过答案LSTM网络后将会产生一个当前阶段预测词的特征向量表示,然后将图片特征、问题特征、前一个词(就图中来看是<BOA>)的词向量特征、答案LSTM网络产生的预测词特征向量做线性加和,然后送入第四个模型产生当前阶段的预测词。依次按照这个步骤产生答案,直到特定的结束符(EOA)出现,停止产生答案。该模型与[3]中提出的模型主要区别:使用了两个独立的LSTM网络处理问题和答案。

本文作者分析认为,由于问题和答案的属性不同(例如,两者的语法格式不同),使用两个独立的LSTM网络处理更加合理,但是需要注意的是,组成问题和答案的单个词语同属一个语料库,所具有的含义应该是相同的,因此应使用同一个词向量层来编码问题和答案的每一个词,该部分则与[3]中相同。

文中基于MS-COCO生成了一个新的更大的数据集,FM-IQA(Freestyle Multilingual Image Question Answering Dataset),访问地址是http://idl.baidu.com/FM-IQA.html,该数据集的问答对非常有趣且极具多样性,答案的长度不一,答案的结果不唯一,很多情况下一个问题有很多种形式的回答都是正确的,因此前面使用的度量标准和一些用于图像标注的度量标准都无法给出合理评判(详见[4]的第5部分)。因此[4]中使用人来评判模型,即视觉图灵测试(Visual Turing Test)。除此之外,[4]中还对模型产生的句子给一个评分,评分越高越好或越高越差。这种细粒度的评分使用0,1,2三个等级,“2”表示答案完全错误或者完全正确,“1”表示答案部分正确,为模型评分的人可以与图灵测试的相同也可以不同。两部分的实验结果如下图10所示。
图10. mQA模型在图灵测试和人工评分上的实验结果(引自:[4])

视觉问答临的挑战及可能的改进方向

虽然目前的VQA研究取得了一些成就,但是就目前的模型达到的效果来看,整体准确率并不高,除了在回答单一答案的简单问题上有较高的准确率外,其他方面模型的准确率普遍偏低,即便是文献[4]提出的复杂模型的图灵测试通过率也仅有60%左右。当前的VQA模型结构还相对简单,答案的内容和形式比较单一,对于稍复杂的需要更多先验知识进行简单推理的问题还无法做出正确的回答。例如[4]中给出了部分模型mQA的错误结果分析,分析中发现当对图片背景的常识性推理错误、问题聚焦的物体太小、需要高层次的逻辑推理等问题出现时,模型往往无法给出正确的预测(这方面详见文献[4]的Discussion)。究其原因,除了CNN的图像信息外,LSTM在学习过程中的知识来源只有训练集中的问答对,知识结构比较简单且信息量匮乏。

未来的RNN模型一种可能的改进方式是:增加一个显式的先验知识库,在提取问题信息的同时融合与问题信息相关的先验知识。正如[5]中提出的一种端到端的记忆网络,它在Q与A之间增加了一系列记忆模块参与计算,记忆模块由一组给定的语句集和两个不同的词向量生成器构成,这些语句由两个编码器独立编码生成2组词向量,第一组词向量与问题融合产生意图/关注点,之后将另一组词向量与产生的意图/注意点融合产生记忆输出,记忆输出与Q对应的词向量融合最终产生输出。该记忆网络与RNN结构不同的是在中间过程中没有输出且增加了一系列记忆模块。将问题与事先设定的记忆部分映射,答案的产生不只与训练集的答案有关,还与记忆部分的记忆内容相关,这样可以产生更多样化且合理的答案。受该记忆网络的启发,对于未来的RNN结构或可在其计算过程中增加这样一些类似的记忆模块以丰富模型在训练过程中的知识源。参考类似这种记忆网络结构,可以在一定程度上缓解RNNs在学习过程由于先验知识不足而导致对于那些需要日常经验加以推断的问题回答不正确的现象,进而改善模型。

视觉问答实验源代码下载 

在研究过程中作者参考目前应用较为广泛的模型,利用mxnet深度学习框架实现了一个简单的VQA原型,代码可以从https://github.com/liuzhi136/Visual-Question-Answering访问,训练数据使用微软提供的MS-COCO数据集,下载地址:http://visualqa.org/download.html。实验得到的结果与[1]中给出的实验结果基本一致,在测试集上达到52.34%的准确度。

以上部分完全是作者的个人理解,欢迎大家批评指正。

致谢:本文作者在此感谢本文匿名审稿人和中科院计算所博士生邬书哲对本文所提出的建设性修改意见。


参考文献

[1] Antol S, Agrawal A, Lu J, et al. VQA: Visual question answering[C] //Proceedings of the IEEE International Conference on Computer Vision. 2015: 2425-2433.[2] Ren M, Kiros R, Zemel R. Exploring models and data for image question answering[C]//Advances in Neural Information Processing Systems. 2015: 2953-2961.[3] Malinowski M, Rohrbach M, Fritz M. Ask your neurons: A neural-based approach to answering questions about images[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 1-9.[4] Gao H, Mao J, Zhou J, et al. Are you talking to a machine? dataset and methods for multilingual image question[C]//Advances in Neural Information Processing Systems. 2015: 2296-2304.[5] Sukhbaatar S, Weston J, Fergus R. End-to-end memory networks[C]//Advances in neural information processing systems. 2015: 2440-2448.[6] Malinowski M, Fritz M. A multi-world approach to question answering about real-world scenes based on uncertain input[C]//Advances in Neural Information Processing Systems. 2014: 1682-1690.[7] T. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollar, and C. L. Zitnick, “Microsoft ´ COCO: Common Objects in Context,” in ECCV, 2014[8] M. Malinowski and M. Fritz, “Towards a visual Turing challenge,” in NIPS Workshop on Learning Semantics, 2014


该文章属于“深度学习大讲堂”原创,如需要转载,请联系loveholicguoguo。


作者简介:
 

往期精彩回顾
SeetaFace开源人脸识别引擎介绍
深度学习在目标跟踪中的应用
美国人文与科学院Poggio院士谈神经科学与人工智能
近期GAN的模型和理论发展
基于深度学习的视觉实例搜索研究进展
【CCF-GAIR特别报道】深度对话周志华教授和颜水成博士
 
   
欢迎关注我们!
深度学习大讲堂是高质量原创内容的平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!
深度学习大讲堂

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存